//     Zepto.js
//     (c) 2010-2016 Thomas Fuchs
//     Zepto.js may be freely distributed under the MIT license.

(function ($, undefined) {
  										var document = window.document, docElem = document.documentElement,
    										origShow = $.fn.show, origHide = $.fn.hide, origToggle = $.fn.toggle;

  										function anim(el, speed, opacity, scale, callback) {
    										if (typeof speed == 'function' && !callback) callback = speed, speed = undefined;
    										var props = { opacity };
    										if (scale) {
      										props.scale = scale;
      										el.css($.fx.cssPrefix + 'transform-origin', '0 0');
    }
    										return el.animate(props, speed, null, callback);
  }

  										function hide(el, speed, scale, callback) {
    										return anim(el, speed, 0, scale, function () {
      										origHide.call($(this));
      										callback && callback.call(this);
    });
  }

  										$.fn.show = function (speed, callback) {
    										origShow.call(this);
    										if (speed === undefined) speed = 0;
    										else this.css('opacity', 0);
    										return anim(this, speed, 1, '1,1', callback);
  };

  										$.fn.hide = function (speed, callback) {
    										if (speed === undefined) return origHide.call(this);
    										else return hide(this, speed, '0,0', callback);
  };

  										$.fn.toggle = function (speed, callback) {
    										if (speed === undefined || typeof speed == 'boolean')
      										return origToggle.call(this, speed);
    										else return this.each(function () {
      										var el = $(this);
      										el[el.css('display') == 'none' ? 'show' : 'hide'](speed, callback);
    });
  };

  										$.fn.fadeTo = function (speed, opacity, callback) {
    										return anim(this, speed, opacity, null, callback);
  };

  										$.fn.fadeIn = function (speed, callback) {
    										var target = this.css('opacity');
    										if (target > 0) this.css('opacity', 0);
    										else target = 1;
    										return origShow.call(this).fadeTo(speed, target, callback);
  };

  										$.fn.fadeOut = function (speed, callback) {
    										return hide(this, speed, null, callback);
  };

  										$.fn.fadeToggle = function (speed, callback) {
    										return this.each(function () {
      										var el = $(this);
      										el[
        (el.css('opacity') == 0 || el.css('display') == 'none') ? 'fadeIn' : 'fadeOut'
      ](speed, callback);
    });
  };
})(Zepto);
